\documentclass[]{article}
\usepackage{xeCJK}
\setCJKmainfont{Noto Serif CJK TC}
\usepackage[a4paper]{geometry}
\usepackage{setspace}
\onehalfspacing
\usepackage{float}
\usepackage{amsmath}
\usepackage{graphicx}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

\begin{center}
\Huge \textbf{数值分析第四次编程作业} \\ [0.2cm]
\LARGE 林敬翊 3210300367 信息与计算科学

\end{center}
\section{QA}
\begin{figure}[H]
    \centering
    \includegraphics[scale=0.7]{Qa.png}
\end{figure}
对于在1.0附近的 \( f(x), g(x), \) 和 \( h(x) \) 函数的分析揭示了对于同一数学表达式的不同计算方法在准确性和精确度上的显著差异。

1. \textbf{计算值的变化}: 尽管这三个函数在理论上代表相同的数学表达式，但在1.0附近它们的计算值有显著差异。

2. \textbf{函数 \( f(x) \) 的误差}: \( f(x) \) 通过展开式计算，涉及多次浮点运算，积累了最大的舍入误差，导致其在1.0附近的震荡最为剧烈，误差最大。

3. \textbf{函数 \( g(x) \) 的性能}: \( g(x) \) 使用秦九韶算法（即分步乘法）计算，相较于 \( f(x) \)，降低了浮点运算次数，因此其表现优于 \( f(x) \)，但仍然存在一定的误差。

4. \textbf{函数 \( h(x) \) 的准确性}: \( h(x) \) 直接计算 \( (x - 1)^8 \)，其浮点运算次数最少，没有发生巨量取消，因此在精度上最为准确，明显优于 \( f(x) \) 和 \( g(x) \)。

5. \textbf{原因分析}: \( f(x) \) 和 \( g(x) \) 由于涉及更多的加减法运算，容易引起巨量取消，从而造成较大误差。而 \( h(x) \) 仅有一次减法运算，避免了这种情况，因此误差较小。

综上所述，这三种计算方法对同一函数值的计算在1.0附近展现出不同的精度和稳定性，其中 \( h(x) \) 由于其简洁的计算方式，在准确性和稳定性上表现最佳。

\section{QB}
程序运算结果可得\\
(1)\\
UFL=0.5\\
OFL=3.5\\
(2)\\
the number of numbers in F:count=25\\
(4)\\
the number of subnormal numbers of F:subcount=6\\
枚举所有数在B2.txt\\
枚举所有次正规数在B4.txt\\
共有25个规格化浮点数也与书上Corollary 4.19$\#F = 2^p(U - L + 1)+1 = 25$相符。\\
\begin{figure}[htbp]
    \centering
    % 第一张图
    \begin{minipage}[t]{0.45\textwidth}
        \centering
        \includegraphics[width=\textwidth]{QB1.png}
        \label{fig:image1}
    \end{minipage}
    \hfill % 用于在两张图之间添加空格
    % 第二张图
    \begin{minipage}[t]{0.45\textwidth}
        \centering
        \includegraphics[width=\textwidth]{QB2.png}
        \label{fig:image2}
    \end{minipage}
\end{figure}

\end{document}